package com.weyoung.common.model.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.weyoung.common.handler.AESEncryptHandler;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.ibatis.mapping.FetchType;

import java.util.Date;

/**
 * 用户详细信息表对应的实体类
 */
@TableName("user_detail")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UserDetailDO {
    /**
     * 关联user表的用户主键id
     */
    @TableId
    private Integer userId;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 性别，可选值为 'male', 'female', 'other'
     */
    private String gender;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 电话号码
     */
    @TableField(typeHandler = AESEncryptHandler.class)
    private String phone;

    /**
     * 电子邮箱地址
     */
     @TableField(typeHandler = AESEncryptHandler.class)
    private String email;

    /**
     * 出生日期
     */
    private Date birthDate;

    /**
     * 去世日期
     */
    private Date deathDate;

    /**
     * 是否在世，0-否，1-是
     */
    @TableField(value = "is_alive",fill = FieldFill.INSERT)
    private String isAlive;

    @TableField(value = "generated_video_url")
    private String generatedVideoUrl;

    /**
     * 配偶id
     */
    @TableField("spouse_user_id")
    private String spouseUserId;

    /**
     * 父亲用户id
     */
    @TableField("father_user_id")
    private String fatherUserId;

    /**
     * 母亲用户id
     */
    @TableField("mother_user_id")
    private String motherUserId;

    /**
     * 地址信息
     */

    @TableField(value = "address_info", typeHandler = AESEncryptHandler.class)
    private String addressInfo;

    /**
     * 创建日期
     */
    @TableField("create_date")
    private Date createDate;

    /**
     * 更新日期
     */
    @TableField("update_date")
    private Date updateDate;

    /**
     * 所在省份
     */
    @TableField("province")
    private String province;

    /**
     * 是否删除，0-未删除，1-已删除
     */
    @TableField("is_deleted")
    private String isDeleted;
}